int divisorSubstrings(int num, int k) {
    char buffer[11];
    int ans = 0, count = 0;
	int n = sprintf(buffer, "%d", num);
    for(int left = 0, right = 0; right < n; right++){
        ans = ans * 10 + (buffer[right] - '0');
        if(right - left + 1 < k)
            continue;
        if(ans != 0 && !(num % ans))
            count++;
        ans = ans - (buffer[left] - '0') * pow(10, k - 1);
        left++;
    }
    return count;
}

/*一个整数 num 的 k 美丽值定义为 num 中符合以下条件的子字符串数目：

子字符串长度为 k 。子字符串能整除 num 。

给你整数 num 和 k ，请你返回 num 的 k 美丽值。*/

/*sprintf
将格式化数据写入字符串
使用在 printf 上使用 format 时打印的相同文本编写字符串，但内容不是打印，而是作为 C 字符串存储在 str 指向的缓冲区中。
缓冲区的大小应该足够大，以包含整个结果字符串。终止 null 字符会自动附加到内容之后。
在 format 参数之后，该函数至少需要与 format 所需的相同数量的附加参数。

成功后，将返回写入的字符总数。此计数不包括自动追加在字符串末尾的其他 null 字符。失败时，将返回负数。
*/